#include <iostream>
using namespace std;

/*
    &不同的语境，含义不同
    & 取地址    &变量名  int *p = &a;
    & 引用      &变量名 = 变量名   int &b = a;
    & 按位与    &操作符  a & b

    三种引用    统一公式 类型名 &别名 = 变量名
        1.指向普通变量的引用
        2.指向指针的引用
        3.指向数组的引用

    如何使用这三种引用
        技巧：不管你是哪种引用，在使用的时候，变量怎么样，引用照抄变量的使用方法
*/

int main()
{
    int n1 = 56;
    float n2 = 98.6;
    char n3[20] = "hello world";

    // 1.指向普通变量的引用
    float &r1 = n2;

    // 2.指向指针的引用
    int *p = &n1; //  &n1 取地址
    int *&r2 = p;

    // int * &r3 = &n1; // 错误，不能对常量取地址

    // 3.指向数组的引用
    char (&r3)[20] = n3;

    // 如何使用这三种引用
    cout << r1 << endl;
    cout << *r2 << endl;
    cout << r3 << endl;

    // n3如何使用 r3照抄
    cout << n3[0] << endl;
    cout << n3[1] << endl;
    cout << r3[0] << endl;
    cout << r3[1] << endl;

    return 0;
}